#ifndef customer_h
#define customer_h

/*
typedef __packed struct
{
  MMP_ULONG   dwALLHead;                 // offset 0x0000   // EE000010
    
  MMP_ULONG   dwIdHead;                  // offset 0x0004   // EE0108004d11008c
  MMP_USHORT wUsbVid;                                      
  MMP_USHORT wUsbPid;                 
  
  MMP_ULONG   dwMStringHead;             // offset 0x000c   // EE114400  
  MMP_USHORT wMString[0x20];            // same with string descriptor
  
  MMP_ULONG   dwPStringHead;             // offset 0x0050   // EE124400       
  MMP_USHORT wPString[0x20];            // same with string descriptor
  
  MMP_ULONG   dwSNStringHead;            // offset 0x0094   // EE134400       
  MMP_USHORT wSNString[0x20];           // same with string descriptor        
  
  MMP_ULONG   dwMaxPowerHead;            // offset 0x00d8   // EE210800       
  MMP_ULONG   dwMaxPower;                  
  
  MMP_ULONG   dwtmpDescHead;             // offset 0x00e0   // EE31040a
  MMP_UBYTE  btmpDesc[0xa00];           // reserved 
  
  MMP_ULONG   dwSensorInitHead;          // offset 0x0ae4   // EE410404       
  MMP_USHORT wSensorInit[0x200];        // 00010072000200BC00110003 => reg01=0x72, reg02=0xbc, reg11=0x03
  
  MMP_ULONG   dwVcmInitHead;             // offset 0x0ee8   // EE518400       
  MMP_USHORT wVcmInit[0x40];            // format is same with senorinit
  
  MMP_ULONG   dwAdcInitHead;             // offset 0x0f6c   // EE618400         
  MMP_USHORT wAdcInit[0x40];            // format is same with sensorinit

  MMP_ULONG   dwIOHead;                  // offset 0x0ff0   // EE711000         
  MMP_UBYTE  IOInit[0x0C];              // IOMAP base on chip

  MMP_ULONG   dwPUHead;                  // offset 0x0f00   // EE725400      
  MMP_ULONG   PUInit[0x14];              // PUMAP 4byte per control,  sequence is base on bmControls in UVC1.1 page 57 

} CUSTOMER_INIT_DATA;
*/

#define CUSTOMER_INIT_DATA_TAG         (0xEE)

#define CUSTOMER_INIT_DATA_HEAD_OFFSET (0x0000)
#define ID_HEAD_OFFSET                 (0x0004)
#define VIDPID_TAG                       (0xEE01)
//#define MSTRING_HEAD_OFFSET            (0x000c)
#define MSTRING_TAG                      (0xEE11)
//#define PSTRING_HEAD_OFFSET            (0x0050)
#define PSTRING_TAG                      (0xEE12)
//#define SNSTRING_HEAD_OFFSET           (0x000c)//(0x0094)
#define SNSTRING_TAG                     (0xEE13)
//#define MAXPOWER_HEAD_OFFSET           (0x00d8)
//#define TMPDESC_HEAD_OFFSET            (0x00e0)
//#define SENSORINIT_HEAD_OFFSET         (0x09e4)
//#define VCMINIT_HEAD_OFFSET            (0x0de8)
//#define VCMINIT_SIZE                             (0x84)
//#define ADCINIT_HEAD_OFFSET            (0x0e6c)
//#define IOINIT_HEAD_OFFSET             (0x0ef0)
//#define PUINIT_HEAD_OFFSET             (0x0f00)
//#define CTINIT_HEAD_OFFSET             (0x0f54)
//#define CDINIT_HEAD_OFFSET             (0x0fA8)

/*
void Customer_ControlSNAP(u_char en);
void Customer_ControlLED(u_char mode,u_char en);
void Customer_ControlSEN(u_char en);
void Customer_ControlMOTOR(u_char en);
void Customer_ControlFLIP(u_char bitmap);
*/

    #if (LED_READY!=255)
    #define LED_READY_PAD_CFG (PAD_E8_CURRENT | PAD_PULL_LOW)
    #endif
    #if (AF_EN!=255)
    #define AF_EN_PAD_CFG (PAD_E8_CURRENT | PAD_PULL_LOW)
    #endif
    #if (SNAP_PIN!=255)
    #define SNAP_PIN_PAD_CFG (PAD_E8_CURRENT | PAD_PULL_LOW)
    #endif
    #if (TEST_PIN1!=255)
    #define TEST_PIN1_PAD_CFG (PAD_E8_CURRENT | PAD_PULL_LOW)
    #endif
    #if (TEST_PIN2!=255)
    #define TEST_PIN1_PAD_CFG (PAD_E8_CURRENT | PAD_PULL_LOW)
    #endif
    #if (TEST_PIN3!=255)
    #define TEST_PIN1_PAD_CFG (PAD_E8_CURRENT | PAD_PULL_LOW)
    #endif

    #define GPIO_INT_H2L   (0)
    #define GPIO_INT_L2H   (1)

#endif